package com.markhsiu.bytee;

/**
 * byte为什么要与上0xff？
 * http://www.cnblogs.com/think-in-java/p/5527389.html
 * 0xff 0x 15 15
 * 1111 1111
 * 
 * 
其实是从数字类型扩展到较宽的类型时，补零扩展还是补符号位扩展。
这是因为Java中只有有符号数，当byte扩展到short, int时，即正数都一样，因为为符号位是0，所以无论如何都是补零扩展；但负数补零扩展和按符号位扩展结果完全不同。
补符号数，原数值不变。
补零时，相当于把有符号数看成无符号数，比如-127 = 0x81，看成无符号数就是129， 256 + （- 127）
对于有符号数，从小扩展大时，需要用&0xff这样方式来确保是按补零扩展。
而从大向小处理，符号位自动无效，所以不用处理。
 *
 */
public class Byte0xff {


    public static void main(String[] args) {
        byte[] a = new byte[10];
        a[0]= -127;
        a[1]= 127;
        System.out.println(a[0]);
     // 等同于 unsigned int c = a[i];
        int c = a[0]&0xff;
        System.out.println(c);
        System.out.println(a[1]);
        int d = a[1]&0xff;
        System.out.println(d);
    }
}
